#ifndef HEAP_H_
#define HEAP_H_

typedef struct
{
  u32int magic;
  u32int size;
  u8int used;
}heap_head_t;

typedef struct
{
  u32int phead;
  u32int magic;
}heap_foot_t;

typedef struct
{
  heap_head_t* head;
  u32int start;
  u32int end;
  u32int maxlen;
}heap_t;

u32int kmalloc_int(u32int sz, int align,u32int* phys);

u32int kmalloc_a(u32int sz);

u32int kmalloc_p(u32int sz, u32int *phys);

u32int kmalloc_ap(u32int sz, u32int *phys);

u32int kmalloc(u32int sz);

void kfree(u32int p);

void init_heap(u32int start,u32int end,u32int maxlen);

#endif
